<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #result {
            width: 200px;
            height: 100px;
            margin-top: 10px;
            background-color: #bfd;
        }
    </style>
</head>

<body>

    <!-- 需求: 点击发送get请求, 能获取到服务端中的数据 -->
    <button>点击发送请求</button>
    <div id="result"></div>

    <script>
        const btn = document.getElementsByTagName('button')[0];
        const res = document.getElementById('result');

        // 定义空对象, 发送时再赋值
        let xhr = null;

        // 标识变量
        let isSending = false; // 表示是否正在发送AJAX请求

        btn.onclick = function () {
            console.log(isSending);

            // 判断, 如果正在发送, 则取消正在发送的请求, 创建一个新请求
            if (isSending) xhr.abort();

            // 正在发送, 给xhr赋值
            xhr = new XMLHttpRequest();

            // 正在发送, 修改标识变量的值
            isSending = true;

            xhr.open('GET', 'http://127.0.0.1:8000/delay-server');
            xhr.send();
            xhr.onreadystatechange = function () {
                if (xhr.readyState === 4) {
                    
                    // 发送完成, 修改标识变量的值
                    isSending = false;
                    
                    if (xhr.status >= 200 && xhr.status < 300) {
                        res.innerHTML = xhr.response;
                    }
                }
            };

        }
    </script>
</body>

</html>